// import { turn } from 'core-js/fn/array'
import Vue from 'vue'
import Vuex from 'vuex'
import { setTokenObj, getTokenObj } from '../utils/storage'

Vue.use(Vuex)
const initTokenObj = getTokenObj() || {}
export default new Vuex.Store({
  state: { // 共享的数据
    tokenInfo: {
      token: initTokenObj.token || '',
      refresh_token: initTokenObj.refresh_token || ''
    }
  },
  // 相当于组件中的computed（计算属性）
  getters: {
    isLogin (state) {
      return !!state.tokenInfo.token // !!是强制转换，转换数据为布尔值
      // if (state.tokenInfo.token) {
      //   return true
      // } else {
      //   return false
      // }
    }
  },
  // state要在mutations修改
  mutations: { // 要修改的数据
    // mutations就是一个一个的函数，第一个参数是当前的state，第二个参数是载荷(也就是要传递的数据)
    mSetTokenInfo (state, newTokenInfo) {
      state.tokenInfo = newTokenInfo

      // 保存到本地localStorage
      setTokenObj(newTokenInfo)
    }
  },
  actions: {
  },
  modules: {
    // 模块名：{
    //   state: {

    //   },
    //   mutations: {

    //   }
    // }
    userInfo: {
      // 命名空间
      namespaced: true,
      state: {
        binthday: '',
        gender: 1,
        id: '',
        mobile: '',
        name: '',
        photo: ''
      },
      mutations: {
        mSetUserInfo (state, newUserInfo) {
          state.binthday = newUserInfo.binthday
          state.gender = newUserInfo.gender
          state.id = newUserInfo.id
          state.mobile = newUserInfo.mobile
          state.name = newUserInfo.name
          state.photo = newUserInfo.photo
        }
      }
    }
  }
})
